package framework;

/**
 * This interface represents a cell, many of which makes up a Board. A cell has
 * one state at any point of time. State of a cell is represented by an int.
 * Different states have distinct int values. The total number of possible cells
 * states is client-defined. This interface must be implemented by the client.
 * 
 */

public interface CellInterface {
	/**
	 * Returns the current state of this cell, note that state is represented by
	 * an int.
	 * 
	 * @param int state - the state which the cell should be set to
	 */
	public int getState();

	/**
	 * Sets the state of this cell to new state. The client must use this method
	 * to initialize states of all cells.
	 * 
	 * @return int row - the row of the cell
	 */
	public void setState(int state);

	/**
	 * Returns the row number of this cell if board is viewed as a 2d array.
	 * 
	 * @return int
	 */
	public int getRowNum();

	/**
	 * Returns the column number of this cell if board is viewed as a 2d array.
	 * 
	 * @return int col - the column of the cell
	 */
	public int getColNum();

	/**
	 * Sets the row number of this cell to r if board is viewed as a 2d array.
	 * The client must use this method to initialize row positions of all cells
	 * on Board.
	 * 
	 * @param int r - the row number which the cell should be set to
	 */
	public void setRowNum(int r);

	/**
	 * Sets the column number of this cell to c if board is viewed as a 2d
	 * array. The client must use this method to initialize column positions of
	 * all cells on Board.
	 * 
	 * @param int c - the column number which the cell should be set to
	 */
	public void setColNum(int c);
}
